package meijuli.com.join51.business.ui;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;

import in.srain.cube.views.ptr.PtrFrameLayout;

/**
 * @author Scott Smith  @Date 2016年04月16/4/22日 14:40
 */
public abstract class PullViewBase extends PtrFrameLayout {

    public PullViewBase(Context context) {
        super(context);
    }

    public PullViewBase(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public PullViewBase(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public abstract View pullView();

    public abstract View headerView();

    public abstract View footerView();

    public abstract boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header);

    public abstract boolean checkCanDoLoading(PtrFrameLayout frame, View content, View header);

    /**
     * 刷新操作完成调用该方法
     */
    public abstract void onRefreshComplete();

    /**
     * 上拉加载完成调用该方法
     *
     * @param isLast  是否是最后一页
     * @param message 加载完成提示语
     */
    public abstract void onLoadComplete(boolean isLast, CharSequence message);

    /**
     * 上拉加载遇到错误
     *
     * @param error 错误信息
     */
    public abstract void onLoadError(String error);

//    @Override
//    public boolean onInterceptTouchEvent(MotionEvent ev) {
//        int y = (int) ev.getY();
//        int x = (int) ev.getX();
//        boolean resume = false;
//        LogUtils.i("test12",y + "xxx" + x);
//        switch (ev.getAction()) {
//            case MotionEvent.ACTION_DOWN:
//                resume = false;
//                break;
//            case MotionEvent.ACTION_MOVE:
//                int deltaY = y - mLastMotionY;
//                int deltaX = x - mLastMotionX;
//                LogUtils.i("test10",deltaX + "xxx" + deltaY);
//                if (Math.abs(deltaX) > Math.abs(deltaY)) {
//                    resume = true;
//                } else {
//                    resume = false;
//                }
//                break;
//            case MotionEvent.ACTION_UP:
//                resume = false;
//                break;
//            default:break;
//        }
//        mLastMotionX = x;
//        mLastMotionY = y;
//        LogUtils.i("test11",y + "xxx" + x);
//        return resume;
//    }
}
